home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / plotting / pcgplots / gptpage.cpp < prev    next >
C/C++ Source or Header  |  1992-04-24  |  4KB  |  141 lines

  1. /*-----------------------------------------------
  2.     GPtIndex.CPP -- CGM Page Index Dialog Box
  3.     Class PageObject
  4.   -----------------------------------------------*/
  5.  
  6. #include <windows.h>
  7. #include "gpt.h"
  8. #include <stdio.h>
  9. //#include <stdarg.h>
  10. PageObjectPt PageObject::ThisPageObject= NULL;
  11.  
  12.  
  13.  
  14. LPSTR lstrchr  (LPSTR str, char ch) ;
  15. LPSTR lstrrchr (LPSTR str, char ch) ;
  16.  
  17. BOOL FAR PASCAL _export PageObject::PageDlgProc(HWND hDlg, WORD message,
  18.                                                                 WORD wParam, LONG lParam)
  19.       {
  20.       char  cLastChar ;
  21.       short nEditLen ;
  22.       char stg[1000];
  23.       char stg2[256];
  24.       CgmObjectPt cgm;
  25.       int nIndex;
  26.       int nPage = 0;
  27.       int nItem;
  28.       long ind;
  29.       void *pic;
  30.  
  31.       HWND hList = GetDlgItem(hDlg, IDD_PLIST);
  32.       HWND hPage = GetDlgItem(hDlg, IDD_PNUM);
  33.       switch (message)  // handle WM_INITDIALOG, WMCOMMAND
  34.           {
  35.           case WM_INITDIALOG:
  36.           ThisPageObject =  (PageObjectPt)GetObjectPt(lParam);
  37.           cgm = ThisPageObject->CgmObj;
  38.           cgm->GetPageText( (PSTR)stg2);
  39.           wsprintf((LPSTR)stg,"Current Page = %d",cgm->GetPicNum() );
  40.           SetDlgItemText(hDlg,IDD_MESS, stg);
  41.  
  42.           wsprintf((LPSTR)stg,"Last Page = %d", cgm->IndexCgm());
  43.           SetDlgItemText(hDlg,IDD_MESS2, stg);
  44.  
  45.           wsprintf((LPSTR)stg,"%d", cgm->GetPicNum());
  46.           SetDlgItemText(hDlg,IDD_PNUM, stg);
  47.  
  48.  
  49.           pic = NULL;
  50.           do
  51.              {
  52.              *stg = '\0';
  53.              cgm->GetPictureText((PSTR)stg, &pic);
  54.              wsprintf((LPSTR)stg2,"%3d : %s ",++nPage,(LPSTR)stg );
  55.              SendMessage(hList, LB_ADDSTRING, NULL, (LONG)(LPSTR)stg2);
  56.              } while (pic);
  57.           SendMessage(hList, LB_SETCURSEL, cgm->GetPicNum()-1, NULL);
  58.  
  59.           pic = NULL;
  60.           ind = 0;
  61.           do
  62.              {
  63.              SendMessage(hList, LB_SETSEL, cgm->GetSel(&pic), ind++);
  64.  
  65.              } while (pic);
  66.           return TRUE ;
  67.  
  68.           case WM_COMMAND:
  69.           switch (wParam)   // control ID's IDD_FLIST, IDD_FNAME, IDOK, IDCANCEL
  70.               {
  71.               case IDD_PLIST:        // Something done with listbox
  72.               switch (HIWORD (lParam))   // Handles LBN_SELCHANGE, LBN_DBLCLK
  73.                   {
  74.                   case LBN_DBLCLK:
  75.                   nIndex = SendMessage(hList, LB_GETCURSEL, NULL, NULL);
  76.                   wsprintf((LPSTR)stg,"%d", nIndex +1);
  77.                   SetDlgItemText(hDlg,IDD_PNUM, stg);
  78.                   //EndDialog (hDlg,1+ SendMessage(hList,LB_GETCURSEL,NULL,NULL));
  79.                   return TRUE;
  80.  
  81.                   case LBN_SELCHANGE:   // listbox selection change
  82.                   //nIndex = SendMessage(hList, LB_GETCURSEL, NULL, NULL);
  83.                   //wsprintf((LPSTR)stg,"%d", nIndex +1);
  84.                   //SetDlgItemText(hDlg,IDD_PNUM, stg);
  85.                   return TRUE ;
  86.                   }   // End  switch (HIWORD (lParam))
  87.               break ;     // End case IDD_FLIST
  88.  
  89.  
  90.               case IDOK:
  91.               stg[0] = 5;   // 5 bytes max
  92.               stg[1] = 0;
  93.               int num = SendMessage(hPage,EM_GETLINE,NULL,(LONG)(LPSTR)stg);
  94.               stg[num] = 0;
  95.               nItem = sscanf(stg,"%d", &num);
  96.               cgm = ThisPageObject->CgmObj;
  97.               if (nItem !=0 && nItem !=EOF && num > 0 && num <= cgm->IndexCgm() )
  98.                   EndDialog (hDlg, num);
  99.               else
  100.                   {
  101.                   wsprintf((LPSTR)stg,"%d",
  102.                                      SendMessage(hList,LB_GETCURSEL,NULL,NULL) +1 );
  103.                   SetDlgItemText(hDlg,IDD_PNUM, stg);
  104.                   MessageBeep(0);
  105.                   }
  106.               return TRUE;
  107.  
  108.               case IDD_SELECT:
  109.               ind = 0;
  110.               pic = NULL;
  111.               cgm = ThisPageObject->CgmObj;
  112.               do
  113.                  {
  114.                  cgm->SetSel(SendMessage(hList, LB_GETSEL, ind++,(long)0 ), &pic);
  115.                  } while (pic);
  116.                   EndDialog (hDlg, cgm->GetPicNum());
  117.               return TRUE ;
  118.  
  119.               case IDCANCEL: EndDialog (hDlg, NO_PAGE_SELECTED);  return TRUE ;
  120.               }   // End switch (wParam)
  121.           break; // End case WM_COMMAND
  122.  
  123.           }      // end switch (message)
  124.       return FALSE ;
  125.       }
  126.  
  127.  // ************* PageObject::PageCgm()
  128. void PageObject::PageCgm(HWND hWndParent)
  129.     {
  130.     DWORD lParam;
  131.     FARPROC lpfnDlgProc = MakeProcInstance(
  132.           (FARPROC)PageObject::PageDlgProc, Appl::hInstance) ;
  133.     // Do dialog passing pointer to  PageObject
  134.     SetObjectPt(this, &lParam);
  135.     Page = DialogBoxParam ( Appl::hInstance, "Page",  hWndParent,
  136.                           lpfnDlgProc,lParam) ;
  137.     FreeProcInstance(lpfnDlgProc);
  138.     }
  139.  
  140.  
  141.